package ucla.axelia.vista;

import java.awt.event.ActionEvent;
import java.util.List;

import nextapp.echo2.app.ContentPane;

import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.button.ButtonGroup;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.layout.GridLayoutData;
import ucla.axelia.controlador.interfaces.IServicioAdministracionActividad;
import ucla.axelia.controlador.interfaces.IServicioAdministracionOcupacion;
import ucla.axelia.controlador.interfaces.IServicioAdministracionProfesion;
import ucla.axelia.controlador.interfaces.IServicioAdministracionPrograma;
import ucla.axelia.controlador.interfaces.IServicioAdministracionTipoActividad;
import ucla.axelia.modelo.beans.EventualidadActividad;
import ucla.axelia.modelo.beans.GradoInstruccion;
import ucla.axelia.modelo.beans.Nacionalidad;
import ucla.axelia.modelo.data.Actividad;
import ucla.axelia.modelo.data.Profesion;
import ucla.axelia.modelo.data.Voluntario;


import com.obelisco.vista.componentes.Catalogo;
import com.obelisco.vista.componentes.ComponenteDatosListener;
import com.obelisco.vista.componentes.TextFieldCatalogo;
import com.obelisco.vista.componentes.TextFieldCatalogoListener;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.controles.BindingRadioButton;
import com.obelisco.vista.controles.BindingSelectField;
import com.obelisco.vista.controles.BindingTextArea;
import com.obelisco.vista.controles.BindingTextField;
import com.obelisco.vista.controles.Grid;
import com.obelisco.vista.controles.RadioButton;
import com.obelisco.vista.controles.SelectField;

import com.obelisco.vista.controles.Label;

public class PaneActividad extends ContentPane implements ComponenteDatosListener {

	//	Definicion de atributos
	private Actividad actividad;
	private IServicioAdministracionActividad servicioAdministracionActividad;
	
	private BindingTextField txtNombre;
	private BindingTextArea txtDescripcion;
	private BindingSelectField cmbPrograma;
	private BindingRadioButton opcEventualidadPeriodica;
	private BindingRadioButton opcEventualidadNoPeriodica;		
	private BindingSelectField cmbTipoActividad;
	
	
	//	Constructor
	public PaneActividad () {
		super();
	}
	
	public void initComponents () { //aqui se define las interfaces
		this.removeAll();
		this.setEnabled(true);
		
		Grid grid = new Grid();
		grid.setStyleName("Obelisco.GridPaneDialogo");
		grid.setSize(2); //Numero de columnas de la tabla
		grid.setColumnWidth(0, new Extent(150, Extent.PX)); //PX denota pixeles						
		
		Label lblPrograma = new Label("Programa");
		grid.add(lblPrograma);
		cmbPrograma = new BindingSelectField(120);
		grid.add(cmbPrograma);
		
		Label lblTipoActividad = new Label("Tipo de Actividad");
		grid.add(lblTipoActividad);
		cmbTipoActividad = new BindingSelectField(120);
		grid.add(cmbTipoActividad);
		
		Label lblNombre = new Label ("Nombre");
		grid.add(lblNombre);
		txtNombre = new BindingTextField(400);
		txtNombre.setMaximumLength(100);
		grid.add(txtNombre);
		
		Label lblDescripcion = new Label ("Descripcion");
		grid.add(lblDescripcion);
		txtDescripcion = new BindingTextArea(400, 100);
		txtDescripcion.setMaximumLength(250);
		grid.add(txtDescripcion);
		
		Label lblEventualidad = new Label("Eventualidad");
		grid.add(lblEventualidad);		
		Row f1=new Row();
		ButtonGroup btgEventualidad = new ButtonGroup();
		opcEventualidadPeriodica = new BindingRadioButton();		
		opcEventualidadPeriodica.setText(EventualidadActividad.getNombreEventualidadActividad(EventualidadActividad.PERIODICA));	
		opcEventualidadPeriodica.setGroup(btgEventualidad);
		f1.add(opcEventualidadPeriodica);
		opcEventualidadNoPeriodica = new BindingRadioButton();
		opcEventualidadNoPeriodica.setText(EventualidadActividad.getNombreEventualidadActividad(EventualidadActividad.NO_PERIODICA));
		opcEventualidadNoPeriodica.setGroup(btgEventualidad);		
		f1.add(opcEventualidadNoPeriodica);
		grid.add(f1);
		
		Column columna = new Column();
		columna.add(grid);		
		this.add(columna);
	}
	
	
	public void onCancelar() {		
		// TODO Auto-generated method stub
	}

	public void onConfirmarCambios(Object arg0, TipoFuncion arg1, String arg2) {	
		// TODO Auto-generated method stub
	}

	public void onConfirmarEliminacion(Object arg0) {
		// TODO Auto-generated method stub
	}

	public void onConsultar(Object arg0) {
		// TODO Auto-generated method stub
		this.setEnabled(false);
	}

	public void onCrear() {
		// TODO Auto-generated method stub
	}

	public void onFuncionPersonalizada(Object arg0, TipoFuncion arg1, String arg2) {
		// TODO Auto-generated method stub
	}

	public void onIncluir(Object arg0) {
		// TODO Auto-generated method stub
	}

	public void onInicializar() {
		// TODO Auto-generated method stub
		this.initComponents();
		
		// Binding
		txtNombre.setBinding(actividad, "nombreActividad");
		txtDescripcion.setBinding(actividad, "descripcionActividad");
		opcEventualidadPeriodica.setBinding( actividad, "eventualidad", EventualidadActividad.PERIODICA);
		opcEventualidadNoPeriodica.setBinding( actividad, "eventualidad", EventualidadActividad.NO_PERIODICA);
		cmbPrograma.setBinding(servicioAdministracionActividad.buscarProgramasPorUsuarioActual(), actividad, "programa");
		cmbTipoActividad.setBinding(servicioAdministracionActividad.buscarTipoActividades(), actividad, "tipoActividad");
	}

	public void onModificar(Object arg0) {
		// TODO Auto-generated method stub
	}

	public void onObjetoEntidad(Object arg0) {
		// TODO Auto-generated method stub
		this.actividad	= (Actividad) arg0;
	}

	public boolean onValidarDatos(Object arg0, TipoFuncion arg1, String arg2) {
		// TODO Auto-generated method stub
		return true;
		
	}

	public void onListaParametros(List listaParametros) {
		// TODO Auto-generated method stub
		
	}


	// Getter y Setter
	public IServicioAdministracionActividad	getServicioAdministracionActividad() {
		return servicioAdministracionActividad;
	}

	public void setServicioAdministracionActividad(
			IServicioAdministracionActividad servicioAdministracionActividad) {
		this.servicioAdministracionActividad = servicioAdministracionActividad;
	}

}
